
package com.huaweicloud.saaslanding.install.repository;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 功能描述
 *
 * @since 2022-03-24
 */
@Repository
public interface RdsRepository {
    /**
     * 创建数据库表(CREATE TABLE IF NOT EXISTS)
     * 每次install项目都会执行，已有数据库表不会被修改，支持增加新的数据库表
     *
     * @param database 数据库名
     * @return int
     */
    int createTable(@Param("database") String database, @Param("prefixCode") String prefixCode);

    /**
     * 创建数据库表(CREATE TABLE IF NOT EXISTS)
     * 每次install项目都会执行，已有数据库表不会被修改，支持增加新的数据库表
     *
     * @param database 数据库名
     * @return int
     */
    int createTableContinue(@Param("database") String database, @Param("prefixCode") String prefixCode);

    /**
     * 创建rds_instance_info表
     *
     * @param database 数据库名
     * @param prefixCode 动态表名前缀
     */
    void createRdsInstanceTable(@Param("database") String database, @Param("prefixCode") String prefixCode);

    /**
     * 创建gaussdb_instance_info表
     *
     * @param database 数据库名
     * @param prefixCode 动态表名前缀
     */
    void createGaussDBInstanceTable(@Param("database") String database, @Param("prefixCode") String prefixCode);

    /**
     * 创建rocketmq_info表
     *
     * @param database 数据库名
     * @param prefixCode 动态表名前缀
     */
    void createRocketMQInfoTable(@Param("database") String database, @Param("prefixCode") String prefixCode);

    /**
     * 创建redis_info表
     *
     * @param database 数据库名
     * @param prefixCode 动态表名前缀
     */
    void createRedisInfoTable(@Param("database") String database, @Param("prefixCode") String prefixCode);

    /**
     * 创建rds_resource表
     *
     * @param database 数据库名
     * @param prefixCode 动态表名前缀
     */
    void createRdsResourceTable(@Param("database") String database, @Param("prefixCode") String prefixCode);

    /**
     * 创建log_resource_op和log_resource_sys表
     *
     * @param database 数据库名
     * @param prefixCode 动态表名前缀
     */
    void createLogResourceTable(@Param("database") String database, @Param("prefixCode") String prefixCode);

    /**
     * 判断数据库表是否存在
     *
     * @param tableName 表名
     * @return true：存在，false：不存在
     */
    @InterceptorIgnore(tenantLine = "true")
    Boolean isTableExist(@Param("database") String database, @Param("tableName") String tableName);
}
